Алгебры процессов Вот когда вы допустим типизируете Процессы. А какие у процессов типы? Ну хаскелисты их называют Session Types, алегбраисты их нахывают полугруппы активностей A: Σ → X → X, в хаскеле это Data.Monoid.Action. Вот это было уже неоднократно показано как самый удачный в применении к State монаде и ее типу-протоколу, а также к FSM автоматами, что тоже является одним языком исчисления процессов. Ну вообщем Σ — это как бы тип процесса, т.е. протокол тип сумма всех сообщений который процесс получает. А X — это тип состояние процесса. Если скажем взять производную от процесса (т.е. его трейс) то мы получим behavior — цепочку состояний X. А если мы возьмем производную у цепочки получим просто скаляр X. Так вот как можно определить алгебру процессов? Вообще когда Петри создавал свои картинки для иллюстрации химических реакций у него была немного другая чем у алгебраистов картинка. Вот например в химии процессы -- это колбы. Кинули одни реагенты в одну колбу, другие в другую — стало быть запустили для процесса P1 + P2 паралельно. у них протолколы Σ1 и Σ2, а состояния X1 + X2. А если вы хотите кинуть их одну колбу (P1,P2) (определить умножение) то неизвестно какой трейс процессы эти оставят. Тут нужно описывать детально химию. Идея такая чтобы упростить семантику операции умножения мы определяем ее таким образом, что произведение (P1,P2) является процессом с общим протоколм Σ1 +Σ2 и общим состоянием, определяемым как произведение состояний процессов (X1,X2). Какие могут быть элиминаторы, кроме очевидных, для такого определения умножения? TAGS (EDIT) cs, theory